package org.mtmi.ui;

import org.mtmi.ui.controls.Control;

/**
 * Mark adaptable objects.
 * 
 * @see Control
 */
public interface IAdaptable 
{
	/** 
	 * From a class and optional parameter, return a known object which is an instance of that class.
	 * @param clazz the class caller are interesting on.
	 * @param arg   depending on class, sometime an extra parameter is needed, generally this arg is null.
	 *              (ie: IConnectable is an adaptable which require connection_id as arg when requesting IConnectionOutlinePointProvider)
	 */
	Object getAdapter( Class<?> clazz, Object arg );
}
